@scream
3年前 提问
1个回答
什么是二次漏洞
GQQQy
3年前
官方采纳
二次漏洞指的是攻击者需要事先构造木马或者病毒代码等攻击手段,利用代码写入网站保存,在第二次或多次请求后调用攻击代码触发或者修改配置触发的漏洞。
举一个简单的SQL 注入例子,攻击者A 在网站评论的地方发表了带有注入语句的评论,这时候注入语句已经被完整地保存到数据库中,但是评论引用功能存在一个SQL 注入漏洞,于是攻击者在评论处引用刚提交的带有注入语句的评论,提交后server 端从数据库中取出第一次的评论,由于第一次评论中带有单引号可闭合第二次的语句,从而触发了注入漏洞,这是一个非常经典的而又真实的案例,它就是在2013 年5 月初被公布的dedecms 评论二次注入漏洞,不过当时还有一个非常精彩的60 个字符长度限制突破,稍后我们在案例里面分析这个漏洞的来龙去脉。
二次漏洞的出现归根结底是开发者在可信数据的逻辑上考虑不全面,开发者认为这个数据来源或者这个配置是不会存在问题的,而没有想到另外一个漏洞能够修改这些“可信”数据,整个漏洞产生的流程图如下图所示:
这样的漏洞没有很大的逻辑关联,所以在发现和修补上面都比一般的直接利用的漏洞相对复杂一点。